function UseKey(input) {
  if(input.value.length == 0) {
    input.focus();
    return false;
  }
  var crypt = new Blfish(input.value);
  return crypt;
}
var CountOfPress = 0;
function encrypt(crypt, input, output, keyinput) {
  if(crypt == false) {
    if(keyinput.value == "") {
      CountOfPress++;
      if(CountOfPress > 3) {
        CountOfPress = 0;
        keyinput.value = prompt("Переводя фокус на текстовое поле \"Ключ\" мы вам " +
            " мягко намекали на то, что для того чтобы зашифровать или расшифровать текст" +
            " нужно ввести ключ длинной хотябы 1 символ, но... Пожалуйста введите ключ для шифрования или дешифрования");
      }
      keyinput.focus();
      return false;
    }
  }
  keyinput.disabled = true;
  crypt = new Blfish(keyinput.value);
  var begin = new Date;
  encoded = punycode.ToASCII(input.value);
  var CryptText = crypt.encrypt(encoded);
  output.value = CryptText;
//  var end = new Date;
//document.getElementById("ReqTime").Inner.HTML = end.getTime() -
//    begin.getTime();
  return CryptText;
}

function dcrypt(crypt, input, output, keyinput) {
   if(crypt == false) {
    if(keyinput.value == "") {
      CountOfPress++;      
      if(CountOfPress > 3) {
        CountOfPress = 0;
        keyinput.value = prompt("Переводя фокус на текстовое поле \"Ключ\" мы вам" +
            " мягко намекали на то, что для того чтобы зашифровать или расшифровать текст" +
            " нужно ввести ключ длинной хотябы 1 символ, но... Пожалуйста введите ключ для шифрования или дешифрования");
      }
      keyinput.focus();
      return false;
    }
  }
  keyinput.disabled = true;
  crypt = new Blfish(keyinput.value);
  var UncryptText = crypt.decrypt(input.value);
  output.value = punycode.ToUnicode(UncryptText);
  return UncryptText;
}

function SwapValue(one, two) {
  one.value = two.value;
  return true;
}

